#pragma once
///////////////////////////////////////////////////////////////////////////////
// Omen Game Engine class                                                    //
//                                                                           //
//                                                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
#ifndef IOMEN_PLUGIN_H
#define IOMEN_PLUGIN_H

#include "OmenConfig.h"
#include "OmenSharedLibrary.h"
#include "IOmenKernel.h"

#include <string>

namespace Omen {

  /// Representation of a plugin
  class OMEN_API IPlugin {
    public: 
      /// <summary>Queries the plugin for its expected engine version</summary>
      int getEngineVersion() const {
      return getEngineVersionAddress();
    }

    /// <summary>Register the plugin to a kernel</summary>
    /// <param name="kernel">Kernel the plugin should register to</param>
      void registerPlugin( Omen::IKernel* kernel);

    /// <summary>Creates a copy of the plugin instance</summary>
     Plugin &operator =(const Plugin &other);
  };

  // ----------------------------------------------------------------------- //

} // namespace Omen

#endif // OMEN_PLUGIN_H
